
package cz.czu.pef.DataModelling.beans.common;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

import java.util.Date;
import java.util.Locale;

import javax.faces.event.ValueChangeEvent;


@ViewScoped
@ManagedBean
public class CalendarBean
{

	private Locale locale;
	private boolean popup;
	private String pattern;
	private Date selectedDate;
	private boolean showApply = false;
	private boolean useCustomDayLabels;

	public Locale getLocale()
	{
		return locale;
	}

	public void setLocale(Locale locale)
	{
		this.locale = locale;
	}

	public boolean isPopup()
	{
		return popup;
	}

	public void setPopup(boolean popup)
	{
		this.popup = popup;
	}

	public String getPattern()
	{
		return pattern;
	}

	public void setPattern(String pattern)
	{
		this.pattern = pattern;
	}

	private void initDefaults()
	{
		locale = new Locale("cs", "CZ");
		popup = true;
		pattern = "yyyy.MM.dd HH:mm";
	}

	/**
	 * Constructs class with default configuration
	 */
	public CalendarBean()
	{
		initDefaults();
	}

	/**
	 * Constructs class with copying previous setup values.
	 * 
	 * @param previous (if null, uses default configuration)
	 */
	public CalendarBean(CalendarBean previous)
	{
		if (previous == null)
			initDefaults();
		else
		{
			locale = previous.getLocale();
			popup = previous.popup;
			pattern = previous.getPattern();
		}
	}

	public void selectLocale(ValueChangeEvent event)
	{

		String tLocale = (String) event.getNewValue();
		if (tLocale != null)
		{
			String lang = tLocale.substring(0, 2);
			String country = tLocale.substring(3);
			locale = new Locale(lang, country, "");
		}
	}

	public boolean isUseCustomDayLabels()
	{
		return useCustomDayLabels;
	}

	public void setUseCustomDayLabels(boolean useCustomDayLabels)
	{
		this.useCustomDayLabels = useCustomDayLabels;
	}

	public Date getSelectedDate()
	{
		return selectedDate;
	}

	public void setSelectedDate(Date selectedDate)
	{
		this.selectedDate = selectedDate;
	}

	public boolean isShowApply()
	{
		return showApply;
	}

	public void setShowApply(boolean showApply)
	{
		this.showApply = showApply;
	}

}